chroot で動作させるようにした方がいいという事は、BINDだけに限らず多くのソフトウェアで共通することです。chroot とは、Linux システムファイルの中に、BINDだけが使うさらに小さなファイルシステムを仮想的に作ることです。BINDが使用するルートディレクトリを/var/named 以下に設定することで、万が一攻撃を受けて侵入された場合に、被害を/var/named の中だけに食い止めることができるようになります。chroot にすることで、/var/named より上位の階層へアクセスすることはできなくなりますので、よりセキュアな環境を構築することができます。
まず、自分がchroot設定されているのどうかすらわからないという方は以下のコマンドを実行してください。赤文字で記したように -u named とだけしか表示されていなければ現在、chroot されていないことになります。
# ps aux | grep named |
named 643 0.0 0.9 30268 2336 ? S Jan05 0:07 /usr/sbin/named -u named |
chrootを利用するには、/etc/sysyconfig/named の以下の行を編集します。コメントを削除し、ROOTDIRを有効にします。chrootする際のディレクトリはどこでも構いませんが、/var/named には最初からゾーンファイルが格納されているのでこちらのほうが楽でしょう。これによって、/var/named 配下が「/」ディレクトリになります。
ROOTDIR="/var/named" |
次に、/var/named 以下にディレクトリを作成します。作成したディレクトリ内にブートファイルとなるnamed.conf を移動します。/etc/named.conf は必要がなくなりますが、スタートアップ時にファイルの存在だけは確認するので削除してはいけません。混乱を避けるためにも、/etc 以下には、空のファイルとしてnamed.conf を作成しておきます。
# mkdir /var/named/etc # mkdir -p /var/named/var/run/named # mv /etc/named.conf /var/named/etc/ # touch /etc/named.conf # 空のファイル |
なお、rndc を使っている方は、named.conf の他にrndc.key やrndc.conf も/var/named/etc にコピーする必要があります。rndc.key って何?という方はここは飛ばして構いません。
# cp /etc/rndc.key /etc/rndc.conf /var/named/etc |
chroot した結果、/var/named がルートディレクトリとなるため、named.conf のdirectory "/var/named"のパスを以下のように修正します。なお、ロギング機能を使っている方は、ログファイルを格納する位置も、/var/named から見た相対パスで指定するようにしてください。
directory "/"; |
ユーザーID及びグループIDが、named のプロセスとして/var/named にアクセスするため、ディレクトリの所有権を named に変更しておきます。
# chown -R named.named /var/named # chmod 700 /var/named # ls -l /var | grep named |
drwx------ 5 named named 4096 1月 7 17:05 named |
以上でchroot の設定は終了です。named の再起動後、chrootできているか ps で確認してみましょう。以下のように、-t オプションを使って/var/named にchroot されていることがわかります。
# /etc/rc.d/init.d/named restart # ps aux | grep named |
2952 ? S 18:21 0:00 /usr/sbin/named -u named -t /var/named |
各ファイルが置かれているディレクトリをまとめると以下表のようになります。
●各項目の意味パス | 存在するファイル |
/etc | ダミーのnamed.conf |
/var/named | ゾーンデータファイル |
/var/named/etc | named.conf 、rndc.key、rndc.conf |
/var/named/var/run/named | named.pid |
ログに /etc/rndc.key: permission denied と表示された場合は、rndc.key の所有者がroot になっている可能性があるのでchown で所有者を named に変更してください。また、うまく起動できない場合は、named.conf に記述されているパスが間違っている可能性があるのでもう一度確認してください。必ず、/var/named から見た相対位置 を指定するようにしてください。
www.it-shikaku.jp
[Top] | |
[講義目次] | |
[2.07:ネットワーククライアントの管理] | |
[2.08:ドメインネームサーバ] | |
[2.08.1 BINDの設定と管理] | |
[2.08.2 ゾーン情報の管理] | |
[2.08.3 セキュアなDNSサーバーの実現] | |
[2.09:HTTPサーバーとプロキシサーバー] | |
[講義検索] | |
[リンク集] |